/* Filename: ex.c
 * Description: exec函数族，调用date打印时间戳
 * Last modified: humble 20200322 17:05
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

static void usage(void);

int main(int argc, char **argv) {
    if(argc != 1){ fprintf(stderr, "argc !=1"); usage(); exit(1); }

    puts("begin");
    // 如果用./ex > /tmp/out，那么里面就没有begin了。因为当前进程空间完全变成了exec(date)
    // 所以在这里提前刷新缓冲区就可以让begin出现在/tmp/out
    fflush(NULL);
    execl("/bin/date", "date", "+%s", NULL); // pid不变，date的pid也就是当前进程的pid
    perror("execl()"); // 如果execl成功了，那么永远都不打印错误
    exit(1);

    puts("end"); // 这里也不打印了
    return 0;
}

static void usage(void) {
#define USAGE "Usage:\n\
  Helloworld\n"
    printf(USAGE);
}
